'''
pillow 官方文档：https://pillow.readthedocs.io/en/5.3.x/
Unicode编码表：https://blog.csdn.net/zhenyu5211314/article/details/51537778
Unicode   大写字母：65-90， 小写字母：97-122， 数字：48-57，汉字：19968-40895
'''
from PIL import Image,ImageFilter,ImageDraw,ImageFont
import numpy as np

# im=Image.open('abc.jpg','r') #打开图片
# #im.show() #显示图片
# print(im.mode,im.size,im.format)
# width,height=im.size
# print(width,height)
# im1=im.rotate(30,expand=True)
# #im1.show()
# #blend  两张图片的混合
# #filter
# im2=im.filter(ImageFilter.CONTOUR)  #给图片添加一个滤镜
# im2.show()
def random_char():
    '''
    Unicode   大写字母：65-90， 小写字母：97-122， 数字：48-57，汉字：19968-40895
    chr() 将一个整数，变成相对应（unicode）的字符
    chr（65）=A
    list=[1,2,3,4]
    list[0]
    :return:
    '''
    txt_list=[]
    txt_list.extend([i for i in range(48,58)])  #把数字对应的编码放入到列表中
    txt_list.extend([i for i in range(65, 91)])
    txt_list.extend([i for i in range(97, 123)])
    txt_list.extend([i for i in range(19968,20068)])
    return chr(txt_list[np.random.randint(0,len(txt_list)-1)])  #随机选择一个列表元素，用chr方法将其转换为字符

def char_color():
    #随机的生成一个（R，G，B）格式的颜色
    return (np.random.randint(32,127),np.random.randint(32,127),np.random.randint(32,127))

def bg_color():
    #随机的生成一个（R，G，B）格式的颜色
    return (np.random.randint(64,255),np.random.randint(64,255),np.random.randint(64,255))
def gen_code():
    #1.画一个空白的长方形
    width=200
    height=50
    image=Image.new('RGB',(width,height),(255,255,255))
    draw=ImageDraw.Draw(image)
    #2 每一个像素点填充不同的颜色
    for w in range(width):
        for h in range(height):
            draw.point((w,h),bg_color())
    # 随机生成四个字符，画到底图上，字符的颜色的也是随机的
    myfont=ImageFont.truetype('simsun.ttc',36)
    for i in range(4):
        draw.text((50*i+10,10),random_char(),font=myfont,fill=char_color())
    # image.save('code.jpg')
    image.show()
if __name__=='__main__':
    gen_code()
